﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using AutoBackupDatabase.BLL;
using DevExpress.XtraGrid.Views.Base;
using AutoBackupDatabase.General;
using AutoBackupDatabase.ENT;
using AutoBackupDatabase.Form;

namespace AutoBackupDatabase.UserControl
{
    public partial class Table_ucc : DevExpress.XtraEditors.XtraUserControl
    {
        private AREABLL areabll;
        private TABLEBLL tablebll;
        private List<TABLEENT> ListTable= null;
        private List<AREAENT> ListArea = null;
        public Table_ucc()
        {
            InitializeComponent();
            areabll = new AREABLL();
            tablebll = new TABLEBLL();
        }

        private void Table2_ucc_Load(object sender, EventArgs e)
        {
            LoadArea();
            LoadDataTable();
            
        }
        private void LoadArea()
        {

            gridLookUpEdit1.Properties.DataSource = areabll.GetAllareaData();
            gridLookUpEdit1.Properties.DisplayMember = "AREANAME";
            gridLookUpEdit1.Properties.ValueMember = "AREAID";
        }
        DETAILGROUPUSERROLEBLL checkRole = new DETAILGROUPUSERROLEBLL();
        private void LoadDataTable()
        {
            try
            {
                

             
            

                ListTable = tablebll.GET_TABLE_ALL();
                dtTable.DataSource = ListTable;
                if (gridView1.RowCount > 0)
                {

                    var table = (TABLEENT)gridView1.GetFocusedRow();
                    txtTableID.Text = table.TABLEID.ToString();
                    txtTableName.Text = table.TABLENAME;
                    txtAreaID.Text = table.AREAID;
                    gridLookUpEdit1.EditValue = table.AREAID;

                }
            }
            catch (Exception)
            {


            }

        }

        private void gridLookUpEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            if (gridLookUpEdit1.Properties.Buttons[1] == e.Button)
            {
                frmArea area = new frmArea();
                area.ShowDialog();
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                if (!checkRole.CHECKROLE(general.groupUserCode, Role.table_add))
                {
                    MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                    return;
                }
                if (btnAdd.Text == "THÊM MỚI")
                {
                    general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
                    txtTableName.Text = "";
                    txtTableName.Enabled = true;
                    gridLookUpEdit1.Enabled = true;
                    return;

                }
                else if (btnAdd.Text == "LƯU")
                {
                    if (gridLookUpEdit1.EditValue.ToString() == "")
                    {
                        MessageBox.Show("Chọn vực cần thêm bàn");
                        return;
                    }
                    if (!Validator.IsNull(txtTableName.Text))
                    {
                        MessageBox.Show("Tên bàn không thể bỏ trống");
                        return;
                    }



                    TABLEENT ent = new TABLEENT();
                    ent.TABLENAME = txtTableName.Text.TrimStart().TrimEnd();
                    ent.AREAID = gridLookUpEdit1.EditValue.ToString();
                    ent.AREANAME = gridLookUpEdit1.Text;
                    ent.TABLEID = int.Parse(txtTableID.Text);

                    if (tablebll.INSERTTABLE(ent))
                    {
                        MessageBox.Show("Thêm mới thành công", "Thông báo");
                        txtTableName.Enabled = false;
                        gridLookUpEdit1.Enabled = false;
                        ListTable.Add(ent);
                        dtTable.RefreshDataSource();
                        general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
                    }

                }
                else
                    MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ");
            }
            catch (Exception)
            {
                    
                
            }
           
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                if (!checkRole.CHECKROLE(general.groupUserCode, Role.table_edit))
                {
                    MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                    return;
                }
                if (btnUpdate.Text == "CẬP NHẬT")
                {
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                    txtTableName.Enabled = true;
                    gridLookUpEdit1.Enabled = true;
                    return;

                }
                else if (btnUpdate.Text == "HỦY")
                {
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                    txtTableName.Enabled = false;
                    gridLookUpEdit1.Enabled = false;
                    return;

                }
                else if (btnUpdate.Text == "LƯU")
                {

                    if (!Validator.IsNull(txtTableName.Text))
                    {
                        MessageBox.Show("Tên bàn không thể bỏ trống");
                        return;
                    }

                    if (ListTable.Exists(p => p.TABLENAME.Equals(txtTableName.Text.TrimStart().TrimEnd()) && p.AREAID.Equals(txtAreaID.Text)))
                    {
                        MessageBox.Show("Tên bàn [" + txtTableName.Text + "] đã tồn tại vui lòng nhập tên khác", "Thông báo");
                        return;
                    }

                    TABLEENT ent = new TABLEENT();
                    ent.TABLENAME = txtTableName.Text;
                    ent.AREAID = txtAreaID.Text;
                    ent.AREANAME = gridLookUpEdit1.Text;
                    ent.TABLEID = int.Parse(txtTableID.Text);
                    if (tablebll.UPDATETABLEBYTABLEID(ent))
                    {
                        MessageBox.Show("Cập nhật thành công");
                        txtTableName.Enabled = false;
                        gridLookUpEdit1.Enabled = false;
                        LoadDataTable();
                        general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);

                    }
                }
                else
                    MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ");
            }
            catch (Exception)
            {
                    
                
            }
           
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                if (!checkRole.CHECKROLE(general.groupUserCode, Role.table_delete))
                {
                    MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                    return;
                }
                if (btnDelete.Text == "HỦY")
                {
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                    txtTableName.Enabled = false;
                    gridLookUpEdit1.Enabled = false;
                }
                else if (btnDelete.Text == "XÓA")
                {
                    if (MessageBox.Show(MessageShow.delConfirmInfo, MessageShow.delConfirmCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                    {
                        TABLEENT ent = new TABLEENT();
                        ent.TABLEID = int.Parse(txtTableID.Text);
                        tablebll.DELTELEAREABYAREAID(ent);
                        LoadDataTable();
                        general.ChangeButtonStatus("delete", btnAdd, btnUpdate, btnDelete);
                    }
                }
                else
                    return;
            }
            catch (Exception)
            {

                return;
            }
            
        }
       
       

        private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            try
            {
                if (e.RowHandle >= 0)
                {
                    TABLEENT table = (TABLEENT)gridView1.GetFocusedRow();
                    txtTableID.Text = table.TABLEID.ToString() ;
                    txtTableName.Text = table.TABLENAME;
                    txtAreaID.Text = table.AREAID;
                    gridLookUpEdit1.EditValue = table.AREAID;
                }
            }
            catch (Exception)
            {

                return;
            }
        }
    }
}
